package net.zoneland.knowledge.model;

import java.util.Date;
import java.util.Optional;

import net.zoneland.knowledge.enums.VisitTypeEnum;

/**
 * 访问足迹.
 * @author zy
 */
public class QaRecordsV2 {
    private String id;

    private String category;

    private String qaType;

    private String level1Title;

    private String level2Title;

    private String level3Title;

    private String level4Title;

    private String queryText;

    private String queStyle;

    private String reqId;

    private String reqName;

    private String cmpDn;

    private String deptDn;

    private Date createTime;

    private int praise;

    private int finalAnswer;

    private int ansCode;

    private String bankId;

    private String sessionId;

    private String ansContent;

    /**
     * 访问类型.
     */
    private VisitTypeEnum visitType;
    /**
     * 点击查询.
     * <p>
     *     0：输入查询；1：点击查询；
     * </p>
     */
    private int clickSearch;

    /**
     * 是否有回答
     */
    private boolean hasAnswer = true;

    public QaRecordsV2() {
        super();
    }

    public QaRecordsV2(final LoginUserPojo loginUserPojo) {
        super();
        this.reqId = loginUserPojo.getUserID();
        this.reqName = loginUserPojo.getUserName();
        this.cmpDn = loginUserPojo.getCompanyDN();
        this.deptDn = loginUserPojo.getDepartmentDN();
    }

    /**
     * .
     *
     * @return clickSearch
     */
    public int getClickSearch() {
        return clickSearch;
    }
    /**
     * .
     * @param clickSearch 点击查询
     */
    public void setClickSearch(final int clickSearch) {
        this.clickSearch = clickSearch;
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public VisitTypeEnum getVisitType() {
        return visitType;
    }
    /**
     * 设置 参数.
     * @param visitType 参数值
     */
    public void setVisitType(final VisitTypeEnum visitType) {
        this.visitType = visitType;
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getId() {
        return id;
    }
    /**
     * 设置 参数.
     * @param id 参数值
     */
    public void setId(final String id) {
        this.id = id == null ? null : id.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getCategory() {
        return category;
    }
    /**
     * 设置 参数.
     * @param category 参数值
     */
    public void setCategory(final String category) {
        this.category = category == null ? null : category.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getQaType() {
        return qaType;
    }
    /**
     * 设置 参数.
     * @param qaType 参数值
     */
    public void setQaType(final String qaType) {
        this.qaType = qaType == null ? null : qaType.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getLevel1Title() {
        return level1Title;
    }
    /**
     * 设置 参数.
     * @param level1Title 参数值
     */
    public void setLevel1Title(final String level1Title) {
        this.level1Title = level1Title == null ? null : level1Title.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getLevel2Title() {
        return level2Title;
    }
    /**
     * 设置 参数.
     * @param level2Title 参数值
     */
    public void setLevel2Title(final String level2Title) {
        this.level2Title = level2Title == null ? null : level2Title.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getLevel3Title() {
        return level3Title;
    }
    /**
     * 设置 参数.
     * @param level3Title 参数值
     */
    public void setLevel3Title(final String level3Title) {
        this.level3Title = level3Title == null ? null : level3Title.trim();
    }

    /**
     * .
     *
     * @return level4Title
     */
    public String getLevel4Title() {

        return level4Title;
    }

    /**
     * .
     *
     * @param level4Title to set
     */
    public void setLevel4Title(final String level4Title) {
        this.level4Title = level4Title == null ? null : level4Title.trim();
    }

    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getQueryText() {
        return queryText;
    }
    /**
     * 设置 参数.
     * @param queryText 参数值
     */
    public void setQueryText(final String queryText) {
        this.queryText = queryText == null ? null : queryText.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getQueStyle() {
        return queStyle;
    }
    /**
     * 设置 参数.
     * @param queStyle 参数值
     */
    public void setQueStyle(final String queStyle) {
        this.queStyle = queStyle == null ? null : queStyle.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getReqId() {
        return reqId;
    }
    /**
     * 设置 参数.
     * @param reqId 参数值
     */
    public void setReqId(final String reqId) {
        this.reqId = reqId == null ? null : reqId.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getReqName() {
        return reqName;
    }
    /**
     * 设置 参数.
     * @param reqName 参数值
     */
    public void setReqName(final String reqName) {
        this.reqName = reqName == null ? null : reqName.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getCmpDn() {
        return cmpDn;
    }
    /**
     * 设置 参数.
     * @param cmpDn 参数值
     */
    public void setCmpDn(final String cmpDn) {
        this.cmpDn = cmpDn == null ? null : cmpDn.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getDeptDn() {
        return deptDn;
    }
    /**
     * 设置 参数.
     * @param deptDn 参数值
     */
    public void setDeptDn(final String deptDn) {
        this.deptDn = deptDn == null ? null : deptDn.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public Date getCreateTime() {
        return Optional.ofNullable(createTime).map(it -> (Date) it.clone()).orElse(null);
    }
    /**
     * 设置 参数.
     * @param createTime 参数值
     */
    public void setCreateTime(final Date createTime) {
        this.createTime = Optional.ofNullable(createTime).map(it -> (Date) it.clone()).orElse(null);
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public int getPraise() {
        return praise;
    }
    /**
     * 设置 参数.
     * @param praise 参数值
     */
    public void setPraise(final int praise) {
        this.praise = praise;
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public int getFinalAnswer() {
        return finalAnswer;
    }
    /**
     * 设置 参数.
     * @param finalAnswer 参数值
     */
    public void setFinalAnswer(final int finalAnswer) {
        this.finalAnswer = finalAnswer;
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public int getAnsCode() {
        return ansCode;
    }
    /**
     * 设置 参数.
     * @param ansCode 参数值
     */
    public void setAnsCode(final int ansCode) {
        this.ansCode = ansCode;
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getBankId() {
        return bankId;
    }
    /**
     * 设置 参数.
     * @param bankId 参数值
     */
    public void setBankId(final String bankId) {
        this.bankId = bankId == null ? null : bankId.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getSessionId() {
        return sessionId;
    }
    /**
     * 设置 参数.
     * @param sessionId 参数值
     */
    public void setSessionId(final String sessionId) {
        this.sessionId = sessionId == null ? null : sessionId.trim();
    }
    /**
     * 获取参数值.
     * @return 参数值
     */
    public String getAnsContent() {
        return ansContent;
    }
    /**
     * 设置 参数.
     * @param ansContent 参数值
     */
    public void setAnsContent(final String ansContent) {
        this.ansContent = ansContent == null ? null : ansContent.trim();
    }

    public boolean isHasAnswer() {
        return hasAnswer;
    }

    public void setHasAnswer(boolean hasAnswer) {
        this.hasAnswer = hasAnswer;
    }
}
